package com.leather.user.api;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.leather.common.entity.User;
import com.leather.common.result.Result;
import com.leather.user.vo.UserVo;

public interface UserService extends IService<User> {


    /**
     * 用户绑定学号
     * @param userVo
     * @return
     */
    Result addUser(UserVo userVo);


    /**
     * 根据学号是查找用户
     * @param number
     * @return
     */
    User getUserByNumber(String number);

    JSONObject getUserInfo(String number);

    /**
     * 登录操作
     * @param userVo
     * @return
     */
    Result login(UserVo userVo);


    /**
     *
     * @param nowId
     * @param userId
     * @return
     */
    Result getUserInfo(int nowId,int userId);


    /**
     * 用户更改信息头像
     * @param number
     * @param imgUrl
     * @return
     */
    Result changeImgUrl(String number, String imgUrl);

    /**
     * 用户更改信息头像
     * @param number
     * @param nickName
     * @return
     */
    Result changeNickName(String number, String nickName);

    /**
     * 用户更改信息头像
     * @param number
     * @param description
     * @return
     */
    Result changeDescription(String number, String description);


    /**
     * 获取用户的头像，昵称，描述等基本信息
     * @param userId
     * @return
     */
    UserVo getUserVoById(int userId);


    /**
     * 冻结用户
     * @param userId
     * @return
     */
    Result frozenUser(int userId);


    /**
     * 解冻用户
     * @param userId
     * @return
     */
    Result unFrozenUser(int userId);

    /**
     * 分页查询用户列表
     * @param page
     * @param order
     * @param search
     * @return
     */
    IPage<User> getUserListByPage(Page<User> page,String order,String search);


    /**
     * 根据昵称获取用户
     * @param nickName
     * @return
     */
    User getUserByNickName(String nickName);

    /**
     * 根据学号获取验证码
     * @param phone
     * @return
     */
    Result getMessage(String number,String phone);

    /**
     * 设置学号的电话
     * @param number
     * @param phone
     * @return
     */
    Result setPhone(String number,String phone,String code);

    /**
     * 获取关注列表
     * @param userId
     * @return
     */
    Result getTouched(int userId);


    /**
     * 获取粉丝列表
     * @param userId
     * @return
     */
    Result getStar(int userId);


    /**
     * 关注用户
     * @param userId
     * @param touchId
     * @return
     */
    Result touchUser(int userId,int touchId);

    /**
     * 取消关注用户
     * @param userId
     * @param touchId
     * @return
     */
    Result deleteTouchUser(int userId,int touchId);


}
